﻿using System;
using System.Collections.Generic;
using System.Text;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;

namespace Sinacor.Servico.Bovespa.Acesso.BusinessLogic
{
    /// <summary>
    /// Data: 21/08/2008
    /// Autor: Andre Pereira da Silva
    /// Obs: Classe foi gerada conforme especificacao para verificar a permissao de uma funcao 
    /// 
    /// Data:   18/09/2008
    /// Autor:  Valdenir Vanalli Filho
    /// Obs:    Classe movida o arquivo VerificarAcessoFuncao.cs para um arquivo homônimo à classe.
    /// </summary>
    public partial class Acesso
    {
        private const int ERRO_NEGOCIO_SEM_PERMISSAO_INCLUIR_ORDEM = 5656565;//TODO: CADASTRAR ESTE ERRO E CORRIGIR O CÓDIGO
        private const int ERRO_NEGOCIO_SEM_PERMISSAO_ALTERAR_ORDEM = 5656565;//TODO: CADASTRAR ESTE ERRO E CORRIGIR O CÓDIGO
        private const int ERRO_NEGOCIO_SEM_PERMISSAO_CANCELAR_ORDEM = 109003;//TODO: CADASTRAR ESTE ERRO E CORRIGIR O CÓDIGO

        /// <summary>
        /// Data:21/08/2008
        /// Author: Andre Pereira da silva 
        /// Funcionalidade: Verificar a permissao a uma determinada funcao
        /// </summary>
        /// <param name="pVerificarAcessoFuncao"></param>
        /// <returns>true or false</returns>
        public bool VerificarAcessoFuncao(BusinessEntity.Parameter.VerificarAcessoFuncao pVerificarAcessoFuncao)
        {
            ResourceAccess.Acesso retorno = new ResourceAccess.Acesso();

            return retorno.VerificarAcessoFuncao(pVerificarAcessoFuncao);
        }

        /// <summary>
        /// Método PermissaoIncluirOrdem
        /// Autor: Valdenir Vanalli Filho (vvanalli.7comm)
        /// Data: 29/08/2008
        /// Observação: Criação do método
        /// </summary>
        public void PermissaoIncluirOrdem()
        {
            Sinacor.Servico.Bovespa.Acesso.BusinessEntity.Parameter.VerificarAcessoFuncao parameter = new Sinacor.Servico.Bovespa.Acesso.BusinessEntity.Parameter.VerificarAcessoFuncao();
            parameter.Funcao = "IORD";

            Sinacor.Servico.Bovespa.Acesso.ResourceAccess.Acesso objAcesso = new Sinacor.Servico.Bovespa.Acesso.ResourceAccess.Acesso();

            if (!objAcesso.VerificarAcessoFuncao(parameter))
            {
                throw new BusinessException(ERRO_NEGOCIO_SEM_PERMISSAO_INCLUIR_ORDEM);
            }
        }

        /// <summary>
        /// Método: PermissaoCancelarOrdem
        /// Autor: Valdenir Vanalli Filho (vvanalli.7comm)
        /// Data: 29/08/2008
        /// Observação: Criação do método
        /// </summary>
        public void PermissaoCancelarOrdem()
        {
            Sinacor.Servico.Bovespa.Acesso.BusinessEntity.Parameter.VerificarAcessoFuncao parameter = new Sinacor.Servico.Bovespa.Acesso.BusinessEntity.Parameter.VerificarAcessoFuncao();
            parameter.Funcao = "EORD";

            Sinacor.Servico.Bovespa.Acesso.ResourceAccess.Acesso objAcesso = new Sinacor.Servico.Bovespa.Acesso.ResourceAccess.Acesso();

            if (!objAcesso.VerificarAcessoFuncao(parameter))
            {
                throw new BusinessException(ERRO_NEGOCIO_SEM_PERMISSAO_CANCELAR_ORDEM);
            }
        }

        /// <summary>
        /// Método PermissaoAlterarOrdem
        /// Autor: Valdenir Vanalli Filho (vvanalli.7comm)
        /// Data: 29/08/2008
        /// Observação: Criação do método
        /// </summary>
        public void PermissaoAlterarOrdem()
        {
            Sinacor.Servico.Bovespa.Acesso.BusinessEntity.Parameter.VerificarAcessoFuncao parameter = new Sinacor.Servico.Bovespa.Acesso.BusinessEntity.Parameter.VerificarAcessoFuncao();
            parameter.Funcao = "AORD";

            Sinacor.Servico.Bovespa.Acesso.ResourceAccess.Acesso objAcesso = new Sinacor.Servico.Bovespa.Acesso.ResourceAccess.Acesso();

            if (!objAcesso.VerificarAcessoFuncao(parameter))
            {
                throw new BusinessException(ERRO_NEGOCIO_SEM_PERMISSAO_INCLUIR_ORDEM);
            }
        }

        /// <summary>
        /// Data    : 18/09/2008
        /// Autor   : Valdenir Vanalli Filho
        /// Obs.    : Método transposto do módulo Comum, que será extinto
        /// </summary>
        /// <param name="colunaNome"></param>
        /// <param name="assessorInicial"></param>
        /// <param name="assessorFinal"></param>
        /// <returns></returns>
        public string ConsultarListaAssessores(string colunaNome, int assessorInicial, int assessorFinal)
        {
            ResourceAccess.Acesso raAcesso = new Sinacor.Servico.Bovespa.Acesso.ResourceAccess.Acesso();

            return raAcesso.ConsultarListaAssessores(colunaNome, assessorInicial, assessorFinal);
        }

        /// <summary>
        /// Data    : 18/09/2008
        /// Autor   : Valdenir Vanalli Filho
        /// Obs.    : Método transposto do módulo Comum, que será extinto
        /// </summary>
        /// <param name="sistema"></param>
        /// <returns></returns>
        public bool VerificarSistemaInstalado(string sistema)
        {
            return new ResourceAccess.Acesso().VerificarSistemaInstalado(sistema);
        }

        /// <summary>
        /// Data    : 18/09/2008
        /// Autor   : Valdenir Vanalli Filho
        /// Obs.    : Método transposto do módulo Comum, que será extinto
        /// </summary>
        /// <param name="funcao"></param>
        /// <returns></returns>
        public static bool VerificarAcessoFuncao(string funcao)
        {
            return ResourceAccess.Acesso.VerificarAcessoFuncao(funcao);
        }

        /// <summary>
        /// Data    : 18/09/2008
        /// Autor   : Valdenir Vanalli Filho
        /// Obs.    : Método transposto do módulo Comum, que será extinto
        /// </summary>
        /// <param name="modulo"></param>
        /// <returns></returns>
        public string ConsultarVersaoModulo(string modulo)
        {
            return new ResourceAccess.Acesso().ConsultarVersaoModulo(modulo);
        }
    }
}
